package com.gvfish.core;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ReflectUtil {
	public static void ref(Class<?> classType, Object newObj, Object oldObj)
			throws Exception {
		// 获得对象的所有属性
		Field fields[] = classType.getDeclaredFields();
		for (Field field : fields) {
			String fieldName = field.getName();
			String firstLetter = fieldName.substring(0, 1).toUpperCase();
			// 获得和属性对应的getXXX()方法的名字
			String getMethodName = "get" + firstLetter + fieldName.substring(1);
			// 获得和属性对应的setXXX()方法的名字
			String setMethodName = "set" + firstLetter + fieldName.substring(1);

			// 获得和属性对应的getXXX()方法
			Method getMethod = null;
			try {
				getMethod = classType.getMethod(getMethodName, new Class[] {});
			} catch (NoSuchMethodException e) {
				e.printStackTrace();
				continue;
			}
			// 获得和属性对应的setXXX()方法
			Method setMethod = classType.getMethod(setMethodName,
					new Class[] { field.getType() });

			// 调用新对象的getXXX()方法
			Object value = getMethod.invoke(newObj, new Object[] {});
			if (value != null) {
				// 调用拷贝对象的setXXX()方法
				setMethod.invoke(oldObj, new Object[] { value });
			}
		}
	}
	public static void refMethod(Class<?> classType, Object newObj, Object oldObj){
		Method methods[]=classType.getDeclaredMethods();
		for(Method method:methods){
			String methodName = method.getName();
		}
	}
}
